package com.Maykk.StudentManager;

import java.util.ArrayList;

/**
 * @ClassName: StuModel
 * @Description: TODO 模型层 数据处理相关
 * @Author: MaykkStar@163.com
 */
public class StuModel {
    /**
     * 添加学员
     *
     * @param stuAdd 如果是个对象就添加学员，如果是空就返回 false
     * @return 返回 add 方法的 true 添加成功，返回 false 表示结束添加
     */
    public boolean doAddStu(Student stuAdd) {
        if (null == stuAdd) return false;
        Student stu = new Student(
                Global.stuID++,
                stuAdd.getName(),
                stuAdd.getSex(),
                stuAdd.getAge(),
                stuAdd.getScore()
        );
        return Global.stuList.add(stu);
    }

    /**
     * 查找所有学员信息
     *
     * @return 所有学员信息
     */
    public ArrayList<Student> findAll() {
        return Global.stuList;
    }


    /**
     * 根据学号查询
     *
     * @param stuID 学号
     * @return 根据学号查找到的学员
     */
    public ArrayList<Student> findByID(int stuID) {
        ArrayList<Student> resList = new ArrayList<>();
        for (Student stu : Global.stuList) {
            if (stuID == stu.getId())
                resList.add(stu);
        }
        return resList;
    }

    /**
     * 根据姓名查找学员
     *
     * @param stuName 学员姓名
     * @return 查找到的学员
     */
    public ArrayList<Student> findByName(String stuName) {
        ArrayList<Student> resList = new ArrayList<>();
        for (Student stu : Global.stuList) {
            if (stuName.equals(stu.getName()))
                resList.add(stu);
        }
        return resList;
    }

    /**
     * 根据性别查询学员
     *
     * @param stuSex 性别
     * @return 查找到的学员
     */
    public ArrayList<Student> findBySex(String stuSex) {
        ArrayList<Student> resList = new ArrayList<>();
        for (Student stu : Global.stuList) {
            if (stu.getSex().equals(stuSex)) {
                resList.add(stu);
            }
        }
        return resList;
    }

    /**
     * 根据年龄查询学员
     *
     * @param stuAge 年龄
     * @return 查找到的学员
     */
    public ArrayList<Student> findByAge(int stuAge) {
        ArrayList<Student> resList = new ArrayList<>();
        for (Student stu : Global.stuList) {
            if (stuAge == stu.getAge())
                resList.add(stu);
        }
        return resList;
    }

    /**
     * 根据成绩查询学员
     *
     * @param stuScore 年龄
     * @return 查找到的学员
     */
    public ArrayList<Student> findByScore(float stuScore) {
        ArrayList<Student> resList = new ArrayList<>();
        for (Student stu : Global.stuList) {
            if (stuScore == stu.getScore())
                resList.add(stu);
        }
        return resList;
    }

    /**
     * 根据输入的 ID 删除指定学员
     *
     * @param delStuID 要删除的学员 ID
     */
    public void doDelStu(int delStuID) {
        for (int i = 0; i < Global.stuList.size(); i++) {
            if (delStuID == Global.stuList.get(i).getId()) {
                Global.stuList.remove(i);
            }
        }
    }

    /**
     * 更新学员信息
     *
     * @param stuList 新的学员信息
     */
    public void doUpdateStu(Student stuList) {
        Global.stuList.set(stuList.getId() - 1, stuList);
    }
}
